package Buffer2;
import java.io.*;
public class Test6 {//定义一个测试类
    public static void main(String[] args) throws Exception {//main方法入口抛出异常
        File srcfolder = new File("E:\\itcast");//创建源文件路径对象
        String name = srcfolder.getName();//获取源文件名称
        File destfolder = new File("IO", name);//创建目的地文件路径
        if (!destfolder.exists()) {//判断目的地文件路径是否存在如果不存在则需要创建目的地路径
            destfolder.mkdir();//
        }
        File[] files = srcfolder.listFiles();//获取源文件下的所有文件
        for (File file : files) {//遍历得到的文件名称
            String name1 = file.getName();//获取所有文件的名称
            File newFilefolder = new File(destfolder, name1);//获取文件名称后，再包装一个新的文件路径，就是之前包装的路径加上文件名称
            copy(file, newFilefolder);//调用方法进行复制文件
        }
    }
    private static void copy(File file, File newFilefolder) throws Exception {//定义方法并抛出异常
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));//创建字节缓冲输入流对象，参数是源文件的对象
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFilefolder));//创建字节缓冲输出流对象，参数是包装后的路径
        byte[] bytes = new byte[1024];//定义读取数据的长度为1024 个字节
        int ten;//定义变量储存读取的有效长度
        while ((ten = bis.read(bytes)) != -1) {//使用while循环进行读取数据
            bos.write(bytes, 0, ten);//使用字节输出流进行读取数据
        }
        bis.close();//关闭字节缓冲输入流资源
        bos.close();//关闭字节缓冲输出流资源
    }
}
